linalg_eigen Module



Interfaces

public interface eigen

An interface to the eigenvalue and eigenvector routines.

  • private pure subroutine eigen_symm(a, vals, vecs)

    Computes the eigenvalues, and optionally the eigenvectors, of a matrix by solving the eigenvalue problem when is a symmetric matrix.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in), dimension(:,:) :: a

    The N-by-N symmetric matrix on which to operate.

    real(kind=real64), intent(out), dimension(:) :: vals

    An N-element array that will contain the eigenvalues sorted into ascending order.

    real(kind=real64), intent(out), optional, dimension(:,:) :: vecs

    If present, the eigenvectors will be computed and this matrix will contain the eigenvectors (one per column) corresponding to each eigenvalue in vals.

  • private pure subroutine eigen_asymm(a, vals, rvecs, lvecs)

    Computes the eigenvalues, and optionally the eigenvectors, of a matrix by solving the eigenvalue problem when is square, but not necessarily symmetric.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in), dimension(:,:) :: a

    On input, the N-by-N matrix on which to operate. On output, the contents of this matrix are overwritten.

    complex(kind=real64), intent(out), dimension(:) :: vals

    An N-element array containing the eigenvalues of the matrix. The eigenvalues are not sorted.

    complex(kind=real64), intent(out), optional, dimension(:,:) :: rvecs

    An optional N-by-N matrix, that if supplied, signals to compute the right eigenvectors (one per column).

    complex(kind=real64), intent(out), optional, dimension(:,:) :: lvecs

    An optional N-by-N matrix, that if supplied, signals to compute the left eigenvectors (one per column).

  • private pure subroutine eigen_gen(a, b, alpha, beta, rvecs, lvecs)

    Computes the eigenvalues, and optionally the eigenvectors, by solving the eigenvalue problem: .

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(in), dimension(:,:) :: a

    The N-by-N matrix .

    real(kind=real64), intent(in), dimension(:,:) :: b

    The N-by-N matrix .

    complex(kind=real64), intent(out), dimension(:) :: alpha

    An N-element array that, if beta is not supplied, contains the eigenvalues. If beta is supplied however, the eigenvalues must be computed as . This however, is not as trivial as it seems as it is entirely possible, and likely, that can overflow or underflow. With that said, the values in will always be less than and usually comparable with the NORM().

    real(kind=real64), intent(out), optional, dimension(:) :: beta

    An optional N-element array that if provided forces alpha to return the numerator, and this array contains the denominator used to determine the eigenvalues as . If used, the values in this array will always be less than and usually comparable with the NORM().

    complex(kind=real64), intent(out), optional, dimension(:,:) :: rvecs

    An optional N-by-N matrix, that if supplied, signals to compute the right eigenvectors (one per column).

    complex(kind=real64), intent(out), optional, dimension(:,:) :: lvecs

    An optional N-by-N matrix, that if supplied, signals to compute the left eigenvectors (one per column).

  • private pure subroutine eigen_cmplx(a, vals, rvecs, lvecs)

    Computes the eigenvalues, and optionally the eigenvectors, of a matrix by solving the eigenvalue problem when is square, but not necessarily symmetric.

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(in), dimension(:,:) :: a

    The N-by-N matrix on which to operate.

    complex(kind=real64), intent(out), dimension(:) :: vals

    An N-element array containing the eigenvalues of the matrix. The eigenvalues are not sorted.

    complex(kind=real64), intent(out), optional, dimension(:,:) :: rvecs

    An optional N-by-N matrix, that if supplied, signals to compute the right eigenvectors (one per column).

    complex(kind=real64), intent(out), optional, dimension(:,:) :: lvecs

    An optional N-by-N matrix, that if supplied, signals to compute the left eigenvectors (one per column).